package com.atguigu.lease.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

@Data
public class BaseEntity implements Serializable {

    @Schema(description = "主键")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /*
     *   业务场景：  如果前端不需要后台传来的很多的字段数据
     *               传递过来的数据没有意义，而且还耗费查询时间
     *
     *  所以：在实体类上面加上 @JsonIgnore 注解，后台查询的时候，
     * 就可以过滤掉 加了 @JsonIgnore 的属性 所对应的 字段
     * */
    @Schema(description = "创建时间")
    @JsonIgnore
    @TableField(value = "create_time" , fill = FieldFill.INSERT)
    private Date createTime;

    @JsonIgnore
    @Schema(description = "更新时间")
    @TableField(value = "update_time" , fill = FieldFill.UPDATE)
    private Date updateTime;

    /*
    *    @TableLogic 注解
    *    在 isDeleted 属性上面加上 @TableLogic 注解以后
    *  在做查询的时候，就会 直接 过滤 isDeleted = 1 的数据（逻辑删除）
    *                       返回 isDeleted = 0
    *   在做删除的时候，会更改 该条记录的 isDeleted 变为1 即可
    * */
    @JsonIgnore
    @Schema(description = "逻辑删除")
    @TableField("is_deleted")
    @TableLogic
    private Byte isDeleted;

}